#include<bits/stdc++.h>
#define ll long long
using namespace std;

struct Node{int v,w,c,nt;};

Node pl[200005];
int hd[605],lt[605];
int n,m,_,cnt=1;
int d[305][305],cur[100005];
ll dis[605],ans[100005];
queue<int> q;
bool vis[605];

inline void add(int u,int v,int w,int c)
{
    pl[++cnt].nt=hd[u];
    pl[cnt].v=v;
    pl[cnt].w=w;
    pl[cnt].c=c;
    hd[u]=cnt;
}

inline bool spfa()
{
    memset(dis,0x3f,sizeof(dis));
    dis[0]=0,vis[0]=1,q.push(0);

    while(!q.empty())
    {
        int u=q.front();
        q.pop();
        vis[u]=0;

        for(int i=hd[u];i;i=pl[i].nt)
        {
            int v=pl[i].v,w=pl[i].w,c=pl[i].c;
            if(!w)
                continue;

            if(dis[v]>dis[u]+c)
            {
                dis[v]=dis[u]+c,lt[v]=i^1;
                if(!vis[v])
                    vis[v]=1,q.push(v);
            }
        }
    }

    if(dis[2*n+1]==0x3f3f3f3f3f3f3f3f)
        return 0;

    int u=2*n+1;
    ans[dis[u]]+=dis[u],cur[dis[u]]++;

    while(u)
    {
        pl[lt[u]].w=1,pl[lt[u]^1].w=0;
        u=pl[lt[u]].v;
    }

    return 1;
}

int main()
{
    freopen("journey.in","r",stdin);
    freopen("journey.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);

    cin>>n>>m>>_;

    memset(d,0x3f,sizeof(d));

    while(m--)
    {
        int u,v,w;
        cin>>u>>v>>w;
        d[u][v]=min(d[u][v],w);
    }

    for(int k=1;k<=n;k++)
    {
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
                d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
        }
    }

    memset(dis,0x3f,sizeof(dis));

    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            if(d[i][j]!=0x3f3f3f3f)
            {
                add(i,j+n,1,d[i][j]);
                add(j+n,i,0,-d[i][j]);
            }
        }
    }

    for(int i=1;i<=n;i++)
    {
        add(0,i,1,0);
        add(i,0,0,0);
        add(i+n,2*n+1,1,0);
        add(2*n+1,i+n,0,0);
    }

    while(spfa());

    for(int i=1;i<=100000;i++)
        ans[i]+=ans[i-1],cur[i]+=cur[i-1];

    while(_--)
    {
        int c;
        cin>>c;
        cout<<ans[c]+1LL*(n-cur[c])*c<<'\n';
    }

    return 0;
}